import pytest
from .fixtures import CompletePersonFactory, RoleFactory
from .utils import do_login, isSignedIn
import random


roles = ['public', 'none', # These first two aren't real roles
        'organiser', 'team', 'reviewer',
        'miniconf', 'proposals_chair', 'late_submitter',
        'funding_reviewer', 'press', 'miniconfsonly']


# All controller functions found by running the following line then hand editing
# grep "def " zkpylons/controllers/*.py | sed -r 's/.*\/([^/]+).py: *def *([^(]+).*/{"url":"\1\/\2", "resp":[200,200,200,200,200,200,200,200,200,200]},/' | awk '{printf "%-50s %s\n",$1,$2}'
# Hitting all these urls isn't sane, it isn't meant to be
# This test is designed to catch any accidental permission changes

controller_entry_points = [
    {'url':'/admin/__before__',                          'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/index',                               'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/rej_proposals_abstracts',             'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/_collect_garbage',                    'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/_known_objects',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/list_attachments',                    'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/auth_users',                          'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/proposal_list',                       'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/miniconf_list',                       'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/proposals_by_strong_rank',            'resp':[403,403,403,403,200,403,403,403,403,403,403]},
    {'url':'/admin/proposals_by_max_rank',               'resp':[403,403,403,403,200,403,403,403,403,403,403]},
    {'url':'/admin/proposals_by_stream',                 'resp':[403,403,403,403,200,403,403,403,403,403,403]},
    {'url':'/admin/proposals_by_number_of_reviewers',    'resp':[403,403,403,403,200,403,403,403,403,403,403]},
    {'url':'/admin/proposals_by_date',                   'resp':[403,403,403,403,200,403,403,403,403,403,403]},
    {'url':'/admin/funding_requests_by_strong_rank',     'resp':[403,403,403,403,403,403,403,403,200,403,403]},
    {'url':'/admin/funding_requests_by_max_rank',        'resp':[403,403,403,403,403,403,403,403,200,403,403]},
    {'url':'/admin/_countdown',                          'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/change_config',                       'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/config',                              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/_get_config',                         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/_put_config',                         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/silly_description_checksum',          'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/registered_followup',                 'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/registered_speakers',                 'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/my_cmp',                              'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/registered_volunteers',               'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/my_cmp',                              'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/registered_parking',                  'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/registered_accommodation',            'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/registered_without_accom',            'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/registered_bagdrop',                  'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/registered_prestuff',                 'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/reconcile',                           'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/admin/linux_australia_signup',              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/lca_announce_signup',                 'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/lca_chat_signup',                     'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/volunteer_signup',                    'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/speaker_signup',                      'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/miniconf_org_signup',                 'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/partners_programme_signup',           'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/speakers_partners',                   'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/talks',                               'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/zkpylons_sales',                      'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/partners_programme',                  'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/planet_lca',                          'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/nonregistered',                       'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/_keysigning_participants_list',       'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/_keysigning_single',                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/_keysigning_conference',              'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/_keysigning_participants',            'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/rego_desk_list',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/admin/previous_years_stats',                'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/people_by_country',                   'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/speakers_by_country',                 'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/people_by_state',                     'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/favourite_distro',                    'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/favourite_editor',                    'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/favourite_shell',                     'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/favourite_vcs',                       'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/email_registration_reminder',         'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/admin/late_submitters',                     'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/rego_foreign',                        'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/rego_list',                           'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/_volunteer_grid',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/paid_counts_by_date',                 'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/paid_product_by_date',                'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/paid_ticket_by_date',                 'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/paid_accom_by_date',                  'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/av_norelease',                        'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/av_technical_requirements',           'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/random_delegates',                    'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/admin/_random_delegates_excluded',          'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/_destroy_personal_information',       'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/lookup',                              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/generate_fulfilment',                 'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/fulfilment_report',                   'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/generate_boardingpass',               'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/generate_fulfilment_codes',           'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/generate_code',                       'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/_keysigning_pdf',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/csv_response',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/get_column_names',                    'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/sql_execute',                         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/sql_response',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/foo',                                 'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/sql_data',                            'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/table_response',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/table_csv_response',                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/attachment/__before__',                     'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/attachment/delete',                         'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/attachment/_delete',                        'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/attachment/view',                           'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/boardingpass/pdf',                          'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/ceiling/validate_python',                   'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/ceiling/__before__',                        'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/ceiling/new',                               'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/ceiling/_new',                              'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/ceiling/view',                              'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/ceiling/special_cases',                     'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/ceiling/index',                             'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/ceiling/edit',                              'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/ceiling/_edit',                             'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/ceiling/delete',                            'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/ceiling/_delete',                           'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/checkin/__before__',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/checkin/lookup',                            'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/checkin/person_data',                       'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/checkin/update_fulfilments',                'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/checkin/get_talk',                          'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/checkin/bio_list',                          'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/db_content/__before__',                     'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/db_content/index',                          'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/db_content/new',                            'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/db_content/_new',                           'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/db_content/view',                           'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/db_content/page',                           'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/db_content/edit',                           'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/db_content/_edit',                          'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/db_content/delete',                         'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/db_content/_delete',                        'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/db_content/list_news',                      'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/db_content/list_press',                     'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/db_content/rss_news',                       'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/db_content/upload',                         'resp':[403,403,302,403,403,403,403,403,403,403,403]},
    {'url':'/db_content/delete_folder',                  'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/db_content/delete_file',                    'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/db_content/list_files',                     'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/db_content/caseinsensitive_sort',           'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/db_content/parse_dbpage',                   'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/db_content/_parse_dbpage',                  'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/error/document',                            'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/error/img',                                 'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/error/style',                               'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/error/_serve_file',                         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/event/__before__',                          'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/event/new',                                 'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/event/_new',                                'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/event/new_proposals',                       'resp':[403,403,302,403,403,403,403,403,403,403,403]},
    {'url':'/event/view',                                'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/event/index',                               'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/event/edit',                                'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/event/_edit',                               'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/event/delete',                              'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/event/_delete',                             'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/event_type/__before__',                     'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/event_type/new',                            'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/event_type/_new',                           'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/event_type/index',                          'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/event_type/edit',                           'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/event_type/_edit',                          'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/event_type/delete',                         'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/event_type/_delete',                        'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/__before__',                     'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/new',                            'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/_new',                           'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/view',                           'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/person',                         'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/index',                          'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/edit',                           'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/_edit',                          'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/delete',                         'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/_delete',                        'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/_badge',                         'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/badge_pdf',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/badge_print',                    'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/swag_give',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_group/__before__',               'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_group/new',                      'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_group/_new',                     'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_group/view',                     'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_group/pdf',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_group/index',                    'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_group/edit',                     'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_group/_edit',                    'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_group/delete',                   'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_group/_delete',                  'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_status/__before__',              'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_status/new',                     'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_status/_new',                    'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_status/view',                    'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_status/index',                   'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_status/edit',                    'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_status/_edit',                   'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_status/delete',                  'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_status/_delete',                 'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_type/__before__',                'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_type/new',                       'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_type/_new',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_type/view',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_type/index',                     'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_type/edit',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_type/_edit',                     'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_type/delete',                    'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_type/_delete',                   'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/funding/__init__',                          'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding/__before__',                        'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding/new',                               'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/funding/_new',                              'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding/attach',                            'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding/_attach',                           'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding/view',                              'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding/edit',                              'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding/_edit',                             'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding/index',                             'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding/approve',                           'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/funding/_approve',                          'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding/withdraw',                          'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding/_withdraw',                         'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding/_is_reviewer',                      'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding/review',                            'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding/_review',                           'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding/review_index',                      'resp':[403,403,403,403,403,403,403,403,200,403,403]},
    {'url':'/funding/summary',                           'resp':[403,403,403,403,403,403,403,403,200,403,403]},
    {'url':'/funding/_score_sort',                       'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding/_review_avg_score',                 'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding_attachment/__before__',             'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding_attachment/delete',                 'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding_attachment/_delete',                'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding_attachment/view',                   'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding_review/__before__',                 'resp':[403,403,403,403,403,403,403,403,500,403,403]},
    {'url':'/funding_review/_is_reviewer',               'resp':[403,403,403,403,403,403,403,403,500,403,403]},
    {'url':'/funding_review/edit',                       'resp':[403,403,403,403,403,403,403,403,500,403,403]},
    {'url':'/funding_review/_edit',                      'resp':[403,403,403,403,403,403,403,403,500,403,403]},
    {'url':'/funding_review/delete',                     'resp':[403,403,403,403,403,403,403,403,500,403,403]},
    {'url':'/funding_review/_delete',                    'resp':[403,403,403,403,403,403,403,403,500,403,403]},
    {'url':'/funding_review/summary',                    'resp':[403,403,403,403,403,403,403,403,200,403,403]},
    {'url':'/funding_review/index',                      'resp':[403,403,403,403,403,403,403,403,500,403,403]},
    {'url':'/funding_review/view',                       'resp':[403,403,403,403,403,403,403,403,500,403,403]},
    {'url':'/funding_type/__before__',                   'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/funding_type/new',                          'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/funding_type/_new',                         'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/funding_type/view',                         'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/funding_type/index',                        'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/funding_type/edit',                         'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/funding_type/_edit',                        'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/funding_type/delete',                       'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/funding_type/_delete',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/home/index',                                'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/invoice/_to_python',                        'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/invoice/_from_python',                      'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/invoice/__before__',                        'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/invoice/product_list',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/new',                               'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/_new',                              'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/invoice/generate_hash',                     'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/invoice/view',                              'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/invoice/printable',                         'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/invoice/index',                             'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/invoice/remind',                            'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/_remind',                           'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/invoice/_check_invoice',                    'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/invoice/pay',                               'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/invoice/get_invoice',                       'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/invoice/pay_invoice',                       'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/invoice/_pay',                              'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/invoice/refund',                            'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/invoice/pay_manual',                        'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/invoice/pdf',                               'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/invoice/void',                              'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/invoice/unvoid',                            'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/invoice/extend',                            'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/location/__before__',                       'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/location/new',                              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/location/_new',                             'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/location/view',                             'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/location/index',                            'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/location/edit',                             'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/location/_edit',                            'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/location/delete',                           'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/location/_delete',                          'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/location/ical',                             'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/map/index',                                 'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/miniconf_proposal/__init__',                'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/miniconf_proposal/__before__',              'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/miniconf_proposal/new',                     'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/miniconf_proposal/_new',                    'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/miniconf_proposal/index',                   'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/not_found/view',                            'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/payment/index',                             'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/payment/view',                              'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/payment/new',                               'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/payment/new_manual',                        'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/payment/_new_manual',                       'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/validate_python',                    'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/validate_python',                    'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/__before__',                         'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/_redirect_user_optimally',           'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/_signin',                            'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/persona_login',                      'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/signout_confirm',                    'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/person/activate',                           'resp':[500,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/person/confirm',                            'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/forgotten_password',                 'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/person/_forgotten_password',                'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/reset_password',                     'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/_reset_password',                    'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/finish_signup',                      'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/person/_finish_signup',                     'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/finish_edit',                        'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/edit',                               'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/_edit',                              'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/reprint',                            'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/new',                                'resp':[200,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/person/_new',                               'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/new_incomplete',                     'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/person/_new_incomplete',                    'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/index',                              'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/view',                               'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/roles',                              'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/_roles',                             'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/offer',                              'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/_offer',                             'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/photocomp/__init__',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/filename',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/pathname',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/write_orig',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/write_scaled',                    'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/delete',                          'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/add',                             'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/get',                             'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/read_db',                         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/from_filename',                   'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/get_db_dir',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/__repr__',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/index',                           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/photo_title',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/edit',                            'resp':[403,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/photocomp/upload',                          'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/photo',                           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/product/__before__',                        'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product/new',                               'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/product/_new',                              'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product/view',                              'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product/index',                             'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product/edit',                              'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product/_edit',                             'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product/delete',                            'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product/_delete',                           'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product/json',                              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/validate_python',          'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/__before__',               'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/new',                      'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/_new',                     'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/view',                     'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/stats',                    'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/index',                    'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/edit',                     'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/_edit',                    'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/delete',                   'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/_delete',                  'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal/__init__',                         'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/proposal/__before__',                       'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/proposal/new',                              'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/proposal/_new',                             'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/proposal/review',                           'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/proposal/_review',                          'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/proposal/attach',                           'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/proposal/_attach',                          'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/proposal/view',                             'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/proposal/edit',                             'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/proposal/_edit',                            'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/proposal/review_index',                     'resp':[403,403,403,403,200,403,403,403,403,403,403]},
    {'url':'/proposal/summary',                          'resp':[403,403,403,403,200,403,403,403,403,403,403]},
    {'url':'/proposal/index',                            'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/proposal/approve',                          'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/proposal/_approve',                         'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/proposal/withdraw',                         'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/proposal/_withdraw',                        'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/proposal/latex',                            'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/proposal/clean_abstract',                   'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/proposal_status/__before__',                'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_status/new',                       'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_status/_new',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_status/view',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_status/index',                     'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_status/edit',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_status/_edit',                     'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_status/delete',                    'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_status/_delete',                   'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_type/__before__',                  'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_type/new',                         'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_type/_new',                        'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_type/view',                        'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_type/index',                       'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_type/edit',                        'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_type/_edit',                       'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_type/delete',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_type/_delete',                     'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/registration/__init__',                     'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/validate_python',              'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/__before__',                   'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/_able_to_edit',                'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/_product_available',           'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/_generate_product_schema',     'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/min_max_validator',            'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/is_speaker',                   'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/is_miniconf_org',              'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/is_volunteer',                 'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/is_role',                      'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/is_same_person',               'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/new',                          'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/_new',                         'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/edit',                         'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/_edit',                        'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/save_details',                 'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/status',                       'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/pay',                          'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/check_invoices',               'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/manual_invoice',               'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/invoices_identical',           'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/_create_invoice',              'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/apply_voucher',                'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/index',                        'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/_export_list',                 'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/generate_badges',              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/registration/_registration_badge_data',     'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/_sanitise_badge_field',        'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/view',                         'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/remind',                       'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/registration/professionals_latex',          'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/registration/rego_desk_latex',              'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/rego_note/__before__',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_note/new',                             'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/rego_note/_new',                            'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_note/view',                            'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_note/index',                           'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_note/edit',                            'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_note/_edit',                           'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_note/delete',                          'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_note/_delete',                         'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_room/__before__',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_room/new',                             'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/rego_room/_new',                            'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_room/view',                            'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_room/index',                           'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_room/edit',                            'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_room/_edit',                           'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_room/delete',                          'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_room/_delete',                         'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/review/__before__',                         'resp':[403,403,403,403,500,403,403,403,403,403,403]},
    {'url':'/review/_is_reviewer',                       'resp':[403,403,403,403,500,403,403,403,403,403,403]},
    {'url':'/review/edit',                               'resp':[403,403,403,403,500,403,403,403,403,403,403]},
    {'url':'/review/delete',                             'resp':[403,403,403,403,500,403,403,403,403,403,403]},
    {'url':'/review/_delete',                            'resp':[403,403,403,403,500,403,403,403,403,403,403]},
    {'url':'/review/summary',                            'resp':[403,403,403,403,200,403,403,403,403,403,403]},
    {'url':'/review/index',                              'resp':[403,403,403,403,500,403,403,403,403,403,403]},
    {'url':'/review/view',                               'resp':[403,403,403,403,500,403,403,403,403,403,403]},
    {'url':'/role/__before__',                           'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/role/edit',                                 'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/role/_edit',                                'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/role/new',                                  'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/role/_new',                                 'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/role/index',                                'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/role/view',                                 'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/role/delete',                               'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/role/_delete',                              'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/schedule/__before__',                       'resp':[302,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/schedule/table',                            'resp':[302,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/schedule/table_view',                       'resp':[302,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/schedule/ical',                             'resp':[302,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/schedule/json',                             'resp':[302,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/schedule/new',                              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/schedule/_new',                             'resp':[302,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/schedule/view',                             'resp':[302,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/schedule/index',                            'resp':[302,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/schedule/edit',                             'resp':[302,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/schedule/_edit',                            'resp':[302,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/schedule/delete',                           'resp':[302,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/schedule/_delete',                          'resp':[302,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/schedule/view_talk',                        'resp':[302,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/secret_hash/lookup',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/secret_hash/transfer',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/social_network/validate_python',            'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/social_network/__before__',                 'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/social_network/new',                        'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/social_network/_new',                       'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/social_network/view',                       'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/social_network/index',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/social_network/edit',                       'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/social_network/_edit',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/social_network/delete',                     'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/social_network/_delete',                    'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/special_offer/validate_python',             'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/special_offer/__before__',                  'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/special_offer/new',                         'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/special_offer/_new',                        'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/special_offer/view',                        'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/special_offer/index',                       'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/special_offer/edit',                        'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/special_offer/_edit',                       'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/special_offer/delete',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/special_offer/_delete',                     'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/stream/validate_python',                    'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/stream/__before__',                         'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/stream/new',                                'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/stream/_new',                               'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/stream/view',                               'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/stream/index',                              'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/stream/edit',                               'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/stream/_edit',                              'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/stream/delete',                             'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/stream/_delete',                            'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/time_slot/__before__',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/time_slot/new',                             'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/time_slot/_new',                            'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/time_slot/view',                            'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/time_slot/index',                           'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/time_slot/edit',                            'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/time_slot/_edit',                           'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/time_slot/delete',                          'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/time_slot/_delete',                         'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/travel/__before__',                         'resp':[403,403,403,403,403,403,403,403,403,403,403]},
    {'url':'/travel/new',                                'resp':[403,403,403,403,403,403,403,403,403,403,403]},
    {'url':'/travel/_new',                               'resp':[403,403,403,403,403,403,403,403,403,403,403]},
    {'url':'/travel/view',                               'resp':[403,403,403,403,403,403,403,403,403,403,403]},
    {'url':'/travel/index',                              'resp':[403,403,403,403,403,403,403,403,403,403,403]},
    {'url':'/travel/edit',                               'resp':[403,403,403,403,403,403,403,403,403,403,403]},
    {'url':'/travel/_edit',                              'resp':[403,403,403,403,403,403,403,403,403,403,403]},
    {'url':'/travel/delete',                             'resp':[403,403,403,403,403,403,403,403,403,403,403]},
    {'url':'/travel/_delete',                            'resp':[403,403,403,403,403,403,403,403,403,403,403]},
    {'url':'/uml_graph/dotmodel',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/volunteer/__before__',                      'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/volunteer/new',                             'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/volunteer/_new',                            'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/volunteer/edit',                            'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/volunteer/_edit',                           'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/volunteer/view',                            'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/volunteer/index',                           'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/volunteer/accept',                          'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/volunteer/_accept',                         'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/volunteer/pending',                         'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/volunteer/reject',                          'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/vote/__before__',                           'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/vote/new',                                  'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/vote/_new',                                 'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/vote/index',                                'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/vote/edit',                                 'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/vote/_edit',                                'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/vote/revoke',                               'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/vote/_revoke',                              'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/voucher/generate_code',                     'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/voucher/validate_python',                   'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/voucher/__before__',                        'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/voucher/_generate_product_schema',          'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/voucher/new',                               'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/voucher/_new',                              'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/voucher/index',                             'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/voucher/delete',                            'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/voucher/_delete',                           'resp':[403,404,404,404,404,404,404,404,404,404,404]}
    # Don't hit - has side effects
    #{'url':'/person/signout',                            'resp':[302,302,302,302,302,302,302,302,302,302,302]},
    # Might have side effects
    #{'url':'/person/finish_login',                       'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    #{'url':'/person/signin',                             'resp':[403,401,302,401,401,401,401,401,401,401,401]},
    ]

# Generated from zkpylons/config/routing.py by hand with scripting help
# Where parameters were required 23 has been used, shouldn't exist but that isn't what we are checking for
routing_entry_points = [
    {'url':'/',                                          'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/media/news',                                'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/media/news/rss',                            'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/media/news/0',                              'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/media/in_the_press',                        'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/about/map',                                 'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/brisbane/map',                              'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/db_content/list_files',                     'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/db_content/delete_file',                    'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/db_content/delete_folder',                  'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/db_content/upload',                         'resp':[403,403,302,403,403,403,403,403,403,403,403]},
    {'url':'/programme/schedule',                        'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/programme/schedule/ical',                   'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/programme/schedule/json',                   'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/programme/schedule/23',                     'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/programme/schedule/video',                  'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/programme/schedule/video/23',               'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/event/new_proposals',                       'resp':[403,403,302,403,403,403,403,403,403,403,403]},
    {'url':'/programme/submit_a_miniconf',               'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/programme/submit_a_proposal',               'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/proposal/review_index',                     'resp':[403,403,403,403,200,403,403,403,403,403,403]},
    {'url':'/proposal/summary',                          'resp':[403,403,403,403,200,403,403,403,403,403,403]},
    {'url':'/proposal/approve',                          'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/review/summary',                            'resp':[403,403,403,403,200,403,403,403,403,403,403]},
    {'url':'/funding/review_index',                      'resp':[403,403,403,403,403,403,403,403,200,403,403]},
    {'url':'/funding/summary',                           'resp':[403,403,403,403,403,403,403,403,200,403,403]},
    {'url':'/funding/approve',                           'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/funding_review/summary',                    'resp':[403,403,403,403,403,403,403,403,200,403,403]},
    {'url':'/invoice/23/pdf',                            'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/remind',                            'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/save_new_invoice',                  'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/invoice/product_list',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/registration/remind',                       'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/register/status',                           'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/silly_description',            'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/registration/generate_badges',              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/generate_hash/23',                  'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/secret/23',                                 'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/person/confirm/23',                         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/person/signout_confirm',                    'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/person/forgotten_password',                 'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/person/reset_password/23',                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/person/persona_login',                      'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/finish_signup',                      'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/person/new_incomplete',                     'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/person/activate',                           'resp':[500,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/registration/professionals_latex',          'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/proposal/latex',                            'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/product/new/23',                            'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/product/json',                              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/registration/23/new_note',                  'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/photocomp/edit',                            'resp':[403,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/photocomp/',                                'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/photocomp/photo/23',                        'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/uml_graph.png',                             'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/uml_graph.jpeg',                            'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/uml_graph.jpg',                             'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/uml_graph.svg',                             'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/uml_graph.dot',                             'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/boardingpass/23',                           'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/db_content/view',                           'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    # Don't hit - has side effects
    #{'url':'/person/signout',                            'resp':[302,302,302,302,302,302,302,302,302,302,302]},
    # Might have side effects
    #{'url':'/person/signin',                             'resp':[403,302,401,401,401,401,401,401,401,401,401]},
    ]

# A combination of the routing rules and a list of all controllers
# Covers {controller}, {controller}/new, {controller}/new_submit, {controller}/{id}
# Doesn't cover {controller}/{id}/{action}

smart_routing_entry_points = [
    {'url':'/admin/new',                                 'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/new_submit',                          'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23',                                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/attachment/new',                            'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/attachment/new_submit',                     'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/attachment/23',                             'resp':[403,400,400,400,400,400,400,400,400,400,400]},
    {'url':'/boardingpass/new',                          'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/boardingpass/new_submit',                   'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/boardingpass/23',                           'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/ceiling/new',                               'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/ceiling/new_submit',                        'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/ceiling/23',                                'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/checkin/new',                               'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/checkin/new_submit',                        'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/checkin/23',                                'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/db_content/new',                            'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/db_content/new_submit',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/db_content/23',                             'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/error/new',                                 'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/error/new_submit',                          'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/error/23',                                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/event/new',                                 'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/event/new_submit',                          'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/event/23',                                  'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/event_type/new',                            'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/event_type/new_submit',                     'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/event_type/23',                             'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_group/new',                      'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_group/new_submit',               'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_group/23',                       'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/new',                            'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/new_submit',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/fulfilment/23',                             'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_status/new',                     'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_status/new_submit',              'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_status/23',                      'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_type/new',                       'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_type/new_submit',                'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_type/23',                        'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/funding_attachment/new',                    'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding_attachment/new_submit',             'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding_attachment/23',                     'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding/new',                               'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/funding/new_submit',                        'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding/23',                                'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding_review/new',                        'resp':[403,403,403,403,403,403,403,403,404,403,403]},
    {'url':'/funding_review/new_submit',                 'resp':[403,403,403,403,403,403,403,403,404,403,403]},
    {'url':'/funding_review/23',                         'resp':[403,403,403,403,403,403,403,403,302,403,403]},
    {'url':'/funding_type/new',                          'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/funding_type/new_submit',                   'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/funding_type/23',                           'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/home/new',                                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/home/new_submit',                           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/home/23',                                   'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/invoice/new',                               'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/new_submit',                        'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/invoice/23',                                'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/location/new',                              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/location/new_submit',                       'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/location/23',                               'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/map/new',                                   'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/map/new_submit',                            'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/map/23',                                    'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/miniconf_proposal/new',                     'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/miniconf_proposal/new_submit',              'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/miniconf_proposal/23',                      'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/not_found/new',                             'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/not_found/new_submit',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/not_found/23',                              'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/payment/new',                               'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/payment/new_submit',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/payment/23',                                'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/person/new',                                'resp':[200,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/person/new_submit',                         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/person/23',                                 'resp':[403,403,404,403,404,403,403,403,403,403,403]},
    {'url':'/photocomp/new',                             'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/new_submit',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/23',                              'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/product_category/new',                      'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/new_submit',               'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/23',                       'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product/new',                               'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/product/new_submit',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/product/23',                                'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal/new',                              'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/proposal/new_submit',                       'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal/23',                               'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal_status/new',                       'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_status/new_submit',                'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_status/23',                        'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_type/new',                         'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_type/new_submit',                  'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_type/23',                          'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/registration/new',                          'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/new_submit',                   'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/registration/23',                           'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/rego_note/new',                             'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/rego_note/new_submit',                      'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/rego_note/23',                              'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_room/new',                             'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/rego_room/new_submit',                      'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/rego_room/23',                              'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/review/new',                                'resp':[403,403,403,403,404,403,403,403,403,403,403]},
    {'url':'/review/new_submit',                         'resp':[403,403,403,403,404,403,403,403,403,403,403]},
    {'url':'/review/23',                                 'resp':[403,403,403,403,302,403,403,403,403,403,403]},
    {'url':'/role/new',                                  'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/role/new_submit',                           'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/role/23',                                   'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/schedule/new',                              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/schedule/new_submit',                       'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/schedule/23',                               'resp':[302,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/secret_hash/new',                           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/secret_hash/new_submit',                    'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/secret_hash/23',                            'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/social_network/new',                        'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/social_network/new_submit',                 'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/social_network/23',                         'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/special_offer/new',                         'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/special_offer/new_submit',                  'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/special_offer/23',                          'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/stream/new',                                'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/stream/new_submit',                         'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/stream/23',                                 'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/time_slot/new',                             'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/time_slot/new_submit',                      'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/time_slot/23',                              'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/travel/new',                                'resp':[403,403,403,403,403,403,403,403,403,403,403]},
    {'url':'/travel/new_submit',                         'resp':[403,403,403,403,403,403,403,403,403,403,403]},
    {'url':'/travel/23',                                 'resp':[403,403,403,403,403,403,403,403,403,403,403]},
    {'url':'/uml_graph/new',                             'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/uml_graph/new_submit',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/uml_graph/23',                              'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/volunteer/new',                             'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/volunteer/new_submit',                      'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/volunteer/23',                              'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/vote/new',                                  'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/vote/new_submit',                           'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/vote/23',                                   'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/voucher/new',                               'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/voucher/new_submit',                        'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/voucher/23',                                'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    ]

# Each url is /{controller}/{id}/{action} : where id = 23, the other two are pulled from a grep of each file
controller_id_entry_points = [
    {'url':'/admin/23/__before__',                       'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/index',                            'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/rej_proposals_abstracts',          'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/_collect_garbage',                 'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/_known_objects',                   'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/list_attachments',                 'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/auth_users',                       'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/proposal_list',                    'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/miniconf_list',                    'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/proposals_by_strong_rank',         'resp':[403,403,403,403,200,403,403,403,403,403,403]},
    {'url':'/admin/23/proposals_by_max_rank',            'resp':[403,403,403,403,200,403,403,403,403,403,403]},
    {'url':'/admin/23/proposals_by_stream',              'resp':[403,403,403,403,200,403,403,403,403,403,403]},
    {'url':'/admin/23/proposals_by_number_of_reviewers', 'resp':[403,403,403,403,200,403,403,403,403,403,403]},
    {'url':'/admin/23/proposals_by_date',                'resp':[403,403,403,403,200,403,403,403,403,403,403]},
    {'url':'/admin/23/funding_requests_by_strong_rank',  'resp':[403,403,403,403,403,403,403,403,200,403,403]},
    {'url':'/admin/23/funding_requests_by_max_rank',     'resp':[403,403,403,403,403,403,403,403,200,403,403]},
    {'url':'/admin/23/_countdown',                       'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/change_config',                    'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/config',                           'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/_get_config',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/_put_config',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/silly_description_checksum',       'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/registered_followup',              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/registered_speakers',              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/my_cmp',                           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/registered_volunteers',            'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/my_cmp',                           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/registered_parking',               'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/registered_accommodation',         'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/registered_without_accom',         'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/registered_bagdrop',               'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/registered_prestuff',              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/reconcile',                        'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/linux_australia_signup',           'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/lca_announce_signup',              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/lca_chat_signup',                  'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/volunteer_signup',                 'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/speaker_signup',                   'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/miniconf_org_signup',              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/partners_programme_signup',        'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/speakers_partners',                'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/talks',                            'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/zkpylons_sales',                   'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/partners_programme',               'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/planet_lca',                       'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/nonregistered',                    'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/_keysigning_participants_list',    'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/_keysigning_single',               'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/_keysigning_conference',           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/_keysigning_participants',         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/rego_desk_list',                   'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/previous_years_stats',             'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/people_by_country',                'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/speakers_by_country',              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/people_by_state',                  'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/favourite_distro',                 'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/favourite_editor',                 'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/favourite_shell',                  'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/favourite_vcs',                    'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/email_registration_reminder',      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/late_submitters',                  'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/rego_foreign',                     'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/rego_list',                        'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/_volunteer_grid',                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/paid_counts_by_date',              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/paid_product_by_date',             'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/paid_ticket_by_date',              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/paid_accom_by_date',               'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/av_norelease',                     'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/av_technical_requirements',        'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/random_delegates',                 'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/_random_delegates_excluded',       'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/_destroy_personal_information',    'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/lookup',                           'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/generate_fulfilment',              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/fulfilment_report',                'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/generate_boardingpass',            'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/generate_fulfilment_codes',        'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/admin/23/generate_code',                    'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/_keysigning_pdf',                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/csv_response',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/get_column_names',                 'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/sql_execute',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/sql_response',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/foo',                              'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/sql_data',                         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/table_response',                   'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/admin/23/table_csv_response',               'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/attachment/23/__before__',                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/attachment/23/_delete',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/attachment/23/delete',                      'resp':[403,400,400,400,400,400,400,400,400,400,400]},
    {'url':'/attachment/23/view',                        'resp':[403,400,400,400,400,400,400,400,400,400,400]},
    {'url':'/boardingpass/23/pdf',                       'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/ceiling/23/validate_python',                'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/ceiling/23/__before__',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/ceiling/23/_new',                           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/ceiling/23/_edit',                          'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/ceiling/23/_delete',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/ceiling/23/delete',                         'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/ceiling/23/edit',                           'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/ceiling/23/index',                          'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/ceiling/23/new',                            'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/ceiling/23/special_cases',                  'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/ceiling/23/view',                           'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/checkin/23/__before__',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/checkin/23/bio_list',                       'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/checkin/23/get_talk',                       'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/checkin/23/lookup',                         'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/checkin/23/person_data',                    'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/checkin/23/update_fulfilments',             'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/db_content/23/__before__',                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/db_content/23/_new',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/db_content/23/view',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/db_content/23/_edit',                       'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/db_content/23/_delete',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/db_content/23/rss_news',                    'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/db_content/23/caseinsensitive_sort',        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/db_content/23/parse_dbpage',                'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/db_content/23/_parse_dbpage',               'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/db_content/23/delete_file',                 'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/db_content/23/delete_folder',               'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/db_content/23/delete',                      'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/db_content/23/edit',                        'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/db_content/23/index',                       'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/db_content/23/list_files',                  'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/db_content/23/list_news',                   'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/db_content/23/list_press',                  'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/db_content/23/new',                         'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/db_content/23/page',                        'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/db_content/23/upload',                      'resp':[403,403,302,403,403,403,403,403,403,403,403]},
    {'url':'/error/23/document',                         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/error/23/img',                              'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/error/23/style',                            'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/error/23/_serve_file',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/event/23/__before__',                       'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/event/23/_new',                             'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/event/23/_edit',                            'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/event/23/_delete',                          'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/event/23/delete',                           'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/event/23/edit',                             'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/event/23/index',                            'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/event/23/new_proposals',                    'resp':[403,403,302,403,403,403,403,403,403,403,403]},
    {'url':'/event/23/new',                              'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/event/23/view',                             'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/event_type/23/__before__',                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/event_type/23/new',                         'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/event_type/23/_new',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/event_type/23/index',                       'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/event_type/23/edit',                        'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/event_type/23/_edit',                       'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/event_type/23/delete',                      'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/event_type/23/_delete',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/fulfilment/23/__before__',                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/fulfilment/23/new',                         'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/23/_new',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/fulfilment/23/view',                        'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/23/person',                      'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/23/index',                       'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/23/edit',                        'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/23/_edit',                       'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/fulfilment/23/delete',                      'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/23/_delete',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/fulfilment/23/_badge',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/fulfilment/23/badge_pdf',                   'resp':[403,403,403,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/23/badge_print',                 'resp':[403,403,403,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment/23/swag_give',                   'resp':[403,403,403,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_group/23/__before__',            'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/fulfilment_group/23/new',                   'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_group/23/_new',                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/fulfilment_group/23/view',                  'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_group/23/pdf',                   'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_group/23/index',                 'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_group/23/edit',                  'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_group/23/_edit',                 'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/fulfilment_group/23/delete',                'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_group/23/_delete',               'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/fulfilment_status/23/__before__',           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/fulfilment_status/23/new',                  'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_status/23/_new',                 'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/fulfilment_status/23/view',                 'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_status/23/index',                'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_status/23/edit',                 'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_status/23/_edit',                'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/fulfilment_status/23/delete',               'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_status/23/_delete',              'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/fulfilment_type/23/__before__',             'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/fulfilment_type/23/new',                    'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_type/23/_new',                   'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/fulfilment_type/23/view',                   'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_type/23/index',                  'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_type/23/edit',                   'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_type/23/_edit',                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/fulfilment_type/23/delete',                 'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/fulfilment_type/23/_delete',                'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding/23/__init__',                       'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding/23/__before__',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding/23/new',                            'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/funding/23/_new',                           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding/23/attach',                         'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/funding/23/_attach',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding/23/view',                           'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding/23/edit',                           'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding/23/_edit',                          'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding/23/index',                          'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/funding/23/approve',                        'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/funding/23/_approve',                       'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding/23/withdraw',                       'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding/23/_withdraw',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding/23/_is_reviewer',                   'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding/23/review',                         'resp':[403,403,403,403,403,403,403,403,404,403,403]},
    {'url':'/funding/23/_review',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding/23/review_index',                   'resp':[403,403,403,403,403,403,403,403,200,403,403]},
    {'url':'/funding/23/summary',                        'resp':[403,403,403,403,403,403,403,403,200,403,403]},
    {'url':'/funding/23/_score_sort',                    'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding/23/_review_avg_score',              'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding_attachment/23/__before__',          'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding_attachment/23/delete',              'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding_attachment/23/_delete',             'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding_attachment/23/view',                'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/funding_review/23/__before__',              'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding_review/23/_is_reviewer',            'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding_review/23/edit',                    'resp':[403,403,403,403,403,403,403,403,500,403,403]},
    {'url':'/funding_review/23/_edit',                   'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding_review/23/delete',                  'resp':[403,403,403,403,403,403,403,403,500,403,403]},
    {'url':'/funding_review/23/_delete',                 'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding_review/23/summary',                 'resp':[403,403,403,403,403,403,403,403,200,403,403]},
    {'url':'/funding_review/23/index',                   'resp':[403,403,403,403,403,403,403,403,200,403,403]},
    {'url':'/funding_review/23/view',                    'resp':[403,403,403,403,403,403,403,403,302,403,403]},
    {'url':'/funding_type/23/__before__',                'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding_type/23/new',                       'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/funding_type/23/_new',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding_type/23/view',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/funding_type/23/index',                     'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/funding_type/23/edit',                      'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/funding_type/23/_edit',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/funding_type/23/delete',                    'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/funding_type/23/_delete',                   'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/home/23/index',                             'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/invoice/23/_to_python',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/invoice/23/_from_python',                   'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/invoice/23/__before__',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/invoice/23/product_list',                   'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/23/new',                            'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/23/_new',                           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/invoice/23/generate_hash',                  'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/23/view',                           'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/23/printable',                      'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/23/index',                          'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/23/remind',                         'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/23/_remind',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/invoice/23/_check_invoice',                 'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/invoice/23/pay',                            'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/invoice/23/get_invoice',                    'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/23/pay_invoice',                    'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/23/_pay',                           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/invoice/23/refund',                         'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/23/pay_manual',                     'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/23/pdf',                            'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/23/void',                           'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/23/unvoid',                         'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/invoice/23/extend',                         'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/location/23/__before__',                    'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/location/23/new',                           'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/location/23/_new',                          'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/location/23/view',                          'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/location/23/index',                         'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/location/23/edit',                          'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/location/23/_edit',                         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/location/23/delete',                        'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/location/23/_delete',                       'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/location/23/ical',                          'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/map/23/index',                              'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/miniconf_proposal/23/__init__',             'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/miniconf_proposal/23/__before__',           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/miniconf_proposal/23/new',                  'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/miniconf_proposal/23/_new',                 'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/miniconf_proposal/23/index',                'resp':[403,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/not_found/23/view',                         'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/payment/23/index',                          'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/payment/23/view',                           'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/payment/23/new',                            'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/payment/23/new_manual',                     'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/payment/23/_new_manual',                    'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/person/23/validate_python',                 'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/person/23/__before__',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/person/23/_redirect_user_optimally',        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/person/23/_signin',                         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/person/23/persona_login',                   'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/23/signout_confirm',                 'resp':[302,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/person/23/activate',                        'resp':[500,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/person/23/confirm',                         'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/23/forgotten_password',              'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/person/23/_forgotten_password',             'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/person/23/reset_password',                  'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/23/_reset_password',                 'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/person/23/finish_signup',                   'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/person/23/_finish_signup',                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/person/23/finish_edit',                     'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/person/23/edit',                            'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/person/23/_edit',                           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/person/23/reprint',                         'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/person/23/new',                             'resp':[200,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/person/23/_new',                            'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/person/23/new_incomplete',                  'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/person/23/_new_incomplete',                 'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/person/23/index',                           'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/person/23/view',                            'resp':[403,403,404,403,404,403,403,403,403,403,403]},
    {'url':'/person/23/roles',                           'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/person/23/_roles',                          'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/person/23/offer',                           'resp':[403,403,404,403,404,403,403,403,403,403,403]},
    {'url':'/person/23/_offer',                          'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/23/__init__',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/23/filename',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/23/pathname',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/23/write_orig',                   'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/23/write_scaled',                 'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/23/delete',                       'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/23/add',                          'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/23/get',                          'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/23/read_db',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/23/from_filename',                'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/23/get_db_dir',                   'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/23/__repr__',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/23/index',                        'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/photocomp/23/photo_title',                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/photocomp/23/edit',                         'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/photocomp/23/upload',                       'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/photocomp/23/photo',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/product/23/__before__',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/product/23/new',                            'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/product/23/_new',                           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/product/23/view',                           'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product/23/index',                          'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/product/23/edit',                           'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product/23/_edit',                          'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/product/23/delete',                         'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/product/23/_delete',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/product/23/json',                           'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/23/validate_python',       'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/23/__before__',            'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/product_category/23/new',                   'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/23/_new',                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/product_category/23/view',                  'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/23/stats',                 'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/23/index',                 'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/23/edit',                  'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/23/_edit',                 'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/product_category/23/delete',                'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/product_category/23/_delete',               'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal/23/__init__',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal/23/__before__',                    'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal/23/new',                           'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/proposal/23/_new',                          'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal/23/review',                        'resp':[403,403,403,403,404,403,403,403,403,403,403]},
    {'url':'/proposal/23/_review',                       'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal/23/attach',                        'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/proposal/23/_attach',                       'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal/23/view',                          'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal/23/edit',                          'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal/23/_edit',                         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal/23/review_index',                  'resp':[403,403,403,403,200,403,403,403,403,403,403]},
    {'url':'/proposal/23/summary',                       'resp':[403,403,403,403,200,403,403,403,403,403,403]},
    {'url':'/proposal/23/index',                         'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/proposal/23/approve',                       'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/proposal/23/_approve',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal/23/withdraw',                      'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal/23/_withdraw',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal/23/latex',                         'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/proposal/23/clean_abstract',                'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/proposal_status/23/__before__',             'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal_status/23/new',                    'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_status/23/_new',                   'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal_status/23/view',                   'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_status/23/index',                  'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_status/23/edit',                   'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_status/23/_edit',                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal_status/23/delete',                 'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_status/23/_delete',                'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal_type/23/__before__',               'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal_type/23/new',                      'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_type/23/_new',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal_type/23/view',                     'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_type/23/index',                    'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_type/23/edit',                     'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_type/23/_edit',                    'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/proposal_type/23/delete',                   'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/proposal_type/23/_delete',                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/registration/23/__init__',                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/registration/23/validate_python',           'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/registration/23/__before__',                'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/registration/23/_able_to_edit',             'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/registration/23/_product_available',        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/registration/23/_generate_product_schema',  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/registration/23/min_max_validator',         'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/23/is_speaker',                'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/23/is_miniconf_org',           'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/23/is_volunteer',              'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/23/is_role',                   'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/23/is_same_person',            'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/23/new',                       'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/23/_new',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/registration/23/edit',                      'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/registration/23/_edit',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/registration/23/save_details',              'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/23/status',                    'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/registration/23/pay',                       'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/registration/23/check_invoices',            'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/23/manual_invoice',            'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/23/invoices_identical',        'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/23/_create_invoice',           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/registration/23/apply_voucher',             'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/registration/23/index',                     'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/registration/23/_export_list',              'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/registration/23/generate_badges',           'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/registration/23/_registration_badge_data',  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/registration/23/_sanitise_badge_field',     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/registration/23/view',                      'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/registration/23/remind',                    'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/registration/23/professionals_latex',       'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/registration/23/rego_desk_latex',           'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/rego_note/23/__before__',                   'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/rego_note/23/new',                          'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/rego_note/23/_new',                         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/rego_note/23/view',                         'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_note/23/index',                        'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/rego_note/23/edit',                         'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_note/23/_edit',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/rego_note/23/delete',                       'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_note/23/_delete',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/rego_room/23/__before__',                   'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/rego_room/23/new',                          'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/rego_room/23/_new',                         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/rego_room/23/view',                         'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_room/23/index',                        'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/rego_room/23/edit',                         'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_room/23/_edit',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/rego_room/23/delete',                       'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/rego_room/23/_delete',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/review/23/__before__',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/review/23/_is_reviewer',                    'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/review/23/edit',                            'resp':[403,403,403,403,500,403,403,403,403,403,403]},
    {'url':'/review/23/delete',                          'resp':[403,403,403,403,500,403,403,403,403,403,403]},
    {'url':'/review/23/_delete',                         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/review/23/summary',                         'resp':[403,403,403,403,200,403,403,403,403,403,403]},
    {'url':'/review/23/index',                           'resp':[403,403,403,403,200,403,403,403,403,403,403]},
    {'url':'/review/23/view',                            'resp':[403,403,403,403,302,403,403,403,403,403,403]},
    {'url':'/role/23/__before__',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/role/23/edit',                              'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/role/23/_edit',                             'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/role/23/new',                               'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/role/23/_new',                              'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/role/23/index',                             'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/role/23/view',                              'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/role/23/delete',                            'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/role/23/_delete',                           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/schedule/23/__before__',                    'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/schedule/23/table',                         'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/schedule/23/table_view',                    'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/schedule/23/ical',                          'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/schedule/23/json',                          'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/schedule/23/new',                           'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/schedule/23/_new',                          'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/schedule/23/view',                          'resp':[302,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/schedule/23/index',                         'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/schedule/23/edit',                          'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/schedule/23/_edit',                         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/schedule/23/delete',                        'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/schedule/23/_delete',                       'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/schedule/23/view_talk',                     'resp':[200,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/secret_hash/23/lookup',                     'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/secret_hash/23/transfer',                   'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/social_network/23/validate_python',         'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/social_network/23/__before__',              'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/social_network/23/new',                     'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/social_network/23/_new',                    'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/social_network/23/view',                    'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/social_network/23/index',                   'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/social_network/23/edit',                    'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/social_network/23/_edit',                   'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/social_network/23/delete',                  'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/social_network/23/_delete',                 'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/special_offer/23/validate_python',          'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/special_offer/23/__before__',               'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/special_offer/23/new',                      'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/special_offer/23/_new',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/special_offer/23/view',                     'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/special_offer/23/index',                    'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/special_offer/23/edit',                     'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/special_offer/23/_edit',                    'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/special_offer/23/delete',                   'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/special_offer/23/_delete',                  'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/stream/23/validate_python',                 'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/stream/23/__before__',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/stream/23/new',                             'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/stream/23/_new',                            'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/stream/23/view',                            'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/stream/23/index',                           'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/stream/23/edit',                            'resp':[403,403,500,403,403,403,403,403,403,403,403]},
    {'url':'/stream/23/_edit',                           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/stream/23/delete',                          'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/stream/23/_delete',                         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/time_slot/23/delete',                       'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/time_slot/23/edit',                         'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/time_slot/23/index',                        'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/time_slot/23/new',                          'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/time_slot/23/view',                         'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/time_slot/23/__before__',                   'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/time_slot/23/_new',                         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/time_slot/23/_edit',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/time_slot/23/_delete',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/travel/23/__before__',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/travel/23/_new',                            'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/travel/23/_edit',                           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/travel/23/_delete',                         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/travel/23/delete',                          'resp':[403,403,403,403,403,403,403,403,403,403,403]},
    {'url':'/travel/23/edit',                            'resp':[403,403,403,403,403,403,403,403,403,403,403]},
    {'url':'/travel/23/index',                           'resp':[403,403,403,403,403,403,403,403,403,403,403]},
    {'url':'/travel/23/new',                             'resp':[403,403,403,403,403,403,403,403,403,403,403]},
    {'url':'/travel/23/view',                            'resp':[403,403,403,403,403,403,403,403,403,403,403]},
    {'url':'/uml_graph/23/dotmodel',                     'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/volunteer/23/__before__',                   'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/volunteer/23/_new',                         'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/volunteer/23/_edit',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/volunteer/23/_accept',                      'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/volunteer/23/accept',                       'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/volunteer/23/edit',                         'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/volunteer/23/index',                        'resp':[403,302,200,302,302,302,302,302,302,302,302]},
    {'url':'/volunteer/23/new',                          'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/volunteer/23/pending',                      'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/volunteer/23/reject',                       'resp':[403,403,404,403,403,403,403,403,403,403,403]},
    {'url':'/volunteer/23/view',                         'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/vote/23/__before__',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/vote/23/_new',                              'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/vote/23/_edit',                             'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/vote/23/_revoke',                           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/vote/23/edit',                              'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/vote/23/index',                             'resp':[403,302,302,302,302,302,302,302,302,302,302]},
    {'url':'/vote/23/new',                               'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/vote/23/revoke',                            'resp':[403,500,500,500,500,500,500,500,500,500,500]},
    {'url':'/voucher/23/validate_python',                'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/voucher/23/__before__',                     'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/voucher/23/_generate_product_schema',       'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/voucher/23/_new',                           'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/voucher/23/_delete',                        'resp':[404,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/voucher/23/delete',                         'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    {'url':'/voucher/23/generate_code',                  'resp':[403,404,404,404,404,404,404,404,404,404,404]},
    {'url':'/voucher/23/index',                          'resp':[403,200,200,200,200,200,200,200,200,200,200]},
    {'url':'/voucher/23/new',                            'resp':[403,403,200,403,403,403,403,403,403,403,403]},
    # Don't hit - might have side effects
    #{'url':'/person/23/signout',                         'resp':[302,302,302,302,302,302,302,302,302,302,302]},
    #{'url':'/person/23/finish_login',                    'resp':[500,500,500,500,500,500,500,500,500,500,500]},
    #{'url':'/person/23/signin',                          'resp':[403,401,401,401,401,401,401,401,401,401,401]},
    ]

entry_points = controller_entry_points + routing_entry_points + smart_routing_entry_points + controller_id_entry_points
# TODO: db_content urls
# Note we don't test special cases like if the user making the request matches the user details being requested
# It is assumed that focussed tests will pick up those sort of special cases

big = {}
for pt in entry_points:
    if pt['url'] in big:
        if big[pt['url']] != pt['resp']:
            print pt['url'], big[pt['url']], pt['resp']
    else:
        big[pt['url']] = pt['resp']


class TestPermissions(object):
    def try_url(self,app,url):
        try:
            resp = app.get(url, status="*")
            if resp.status_code == 200 and "Otherwise enter your credentials in the following form." in unicode(resp.body, 'utf-8'):
                # Login page --> unauthorized 401 or 403 depending on if we are logged in
                code = 401 if isSignedIn(app) else 403
            else:
                code = resp.status_code
        except:
            code = 500 # Exception --> internal server error
        return code

    def gen_table(self, app, db_session):
        """ This function was used to generate a starting permission table.
            Kept in case it becomes useful again.
        """
        #table = entry_points
        table = controller_id_entry_points

        people = []
        for role in roles:
            if role == 'public':
                # No login
                people.append(None)
            elif role == 'none':
                # Default, no special roles
                people.append(CompletePersonFactory())
            else:
                # We have a role
                role = RoleFactory(name=role)
                people.append(CompletePersonFactory(roles=[role]))
        db_session.commit()

        for i in range(len(people)):
            p = people[i]
            if p:
                do_login(app, p)
                assert isSignedIn(app)
            else:
                app.get('/person/signout')
                assert not isSignedIn(app)

            for pt in table:
                pt['resp'][i] = self.try_url(app,pt['url'])

        for pt in table:
            print "{'url':%-45s 'resp':%s}," % ("'"+pt['url']+"',", pt['resp'])

    def update_table(self, app, db_session):
        tables = [controller_entry_points, routing_entry_points, smart_routing_entry_points, controller_id_entry_points]
        for role in  roles:
            print ""
            if role == 'public':
                # No login
                app.get('/person/signout')
                assert not isSignedIn(app)
            else:
                if role == 'none':
                    # Default, no special roles
                    p = CompletePersonFactory()
                else:
                    # We have a role
                    r = RoleFactory(name=role)
                    p = CompletePersonFactory(roles=[r])
                db_session.commit()
                do_login(app, p)
                assert isSignedIn(app), "Person with role %s could not sign in" % role

            # entry_point expected return is an array which syncs up with the role positions
            role_index = roles.index(role)

            for table in tables:
                for pt in table:
                    ret = self.try_url(app,pt['url'])
                    if ret != pt['resp'][role_index]:
                        print "%s for %s returned %s, expected %s" % (pt['url'], role, ret, pt['resp'][role_index])
                        pt['resp'][role_index] = ret
        print "controller_entry_points", "=", controller_entry_points
        print "routing_entry_points", "=", routing_entry_points
        print "smart_routing_entry_points", "=", smart_routing_entry_points
        print "controller_id_entry_points", "=", controller_id_entry_points

    def random_table(self, app, db_session):
        """ /person/signin varies response based on position.
            This test was crafted to look for other instances like this but none were found.
            It is being kept as it is probable that a similar one off check will be desired later
        """
        all_points = controller_entry_points + routing_entry_points + smart_routing_entry_points + controller_id_entry_points
        random.shuffle(all_points)

        for role in  roles:
            print ""
            app.get('/person/signout')
            if role == 'public':
                # No login
                assert not isSignedIn(app)
            else:
                if role == 'none':
                    # Default, no special roles
                    p = CompletePersonFactory()
                else:
                    # We have a role
                    r = RoleFactory(name=role)
                    p = CompletePersonFactory(roles=[r])
                db_session.commit()
                do_login(app, p)
                assert isSignedIn(app), "Person with role %s could not sign in" % role

            # entry_point expected return is an array which syncs up with the role positions
            role_index = roles.index(role)

            for pt in all_points:
                ret = self.try_url(app,pt['url'])
                if ret != pt['resp'][role_index]:
                    pt['resp'][role_index] = "X"

        print all_points



    # Testing every role takes about 10 minutes on my box
    # Using parametrize breaks it up into 10 tests, which is less scary when running them
    # Particularly important as the travis framework has a ten minute timeout
    @pytest.mark.parametrize("role", roles)
    def test_role(self, app, db_session, role):
        print ""
        if role == 'public':
            # No login
            app.get('/person/signout')
            assert not isSignedIn(app)
        else:
            if role == 'none':
                # Default, no special roles
                p = CompletePersonFactory()
            else:
                # We have a role
                r = RoleFactory(name=role)
                p = CompletePersonFactory(roles=[r])
            db_session.commit()
            do_login(app, p)
            assert isSignedIn(app), "Person with role %s could not sign in" % role

        # entry_point expected return is an array which syncs up with the role positions
        role_index = roles.index(role)

        for pt in entry_points:
            ret = self.try_url(app,pt['url'])
            assert ret == pt['resp'][role_index], "%s for %s returned %s, expected %s" % (pt['url'], role, ret, pt['resp'][role_index])

    # TODO: Add tests to ensure that these lists are up to data
    #       For example scan each controller file for functions, ensure each function is represented in the lists


